package com.gzx.plugin.tjzy.modular.product.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.gzx.plugin.tjzy.core.entity.CustomVo;
import com.gzx.plugin.tjzy.modular.product.entity.bo.GzxProductBo;
import com.gzx.plugin.tjzy.modular.product.entity.bo.GzxProductIdBo;
import com.gzx.plugin.tjzy.modular.product.entity.bo.GzxProductQueryBo;
import com.gzx.plugin.tjzy.modular.product.entity.vo.GzxProductVo;

import java.util.List;

/**
 * 委托公司产品Service接口
 */
public interface GzxProductService {

    /**
     * 分页查询委托公司产品列表
     *
     * @param bo        查询条件
     * @return 委托公司产品分页列表
     */
    Page<GzxProductVo> pageList(GzxProductQueryBo bo);

    /**
     * 查询委托公司产品
     *
     * @param id 主键
     * @return 委托公司产品
     */
    GzxProductVo queryById(Long id);

    /**
     * 查询所有产品
     *
     * @param flag true以自己为维度查询，flase以上级维度查询
     * @param val  产品名称或者编码
     */
    List<CustomVo> listAll(boolean flag, String val);

    /**
     * 新增委托公司产品
     *
     * @param bo 委托公司产品
     */
    void insertByBo(GzxProductBo bo);

    /**
     * 修改委托公司产品
     *
     * @param bo 委托公司产品
     */
    void updateByBo(GzxProductBo bo);

    /**
     * 校验并批量删除委托公司产品信息
     *
     * @param productIdBo     待删除的主键集合
     */
    void deleteWithValidByIds(GzxProductIdBo productIdBo);
}
